package cn.itheima.edu.info.manger.controller;

import cn.itheima.edu.info.manger.domain.Student;
import cn.itheima.edu.info.manger.service.StudentService;

import java.util.Scanner;

public class StudentController {
    //创建键盘录入对象和业务员对象
    Scanner sc = new Scanner(System.in);
    StudentService studentService = new StudentService();

    public void start() {

        lo:
        while (true) {
            System.out.println("--------欢迎来到 <学生> 管理系统--------");
            System.out.println("请输入您的选择: 1.添加学生  2.删除学生  3.修改学生  4.查看学生  5.退出");
            String choose = sc.next();
            switch (choose) {
                case "1":
                    System.out.println("添加信息");
                    addStudeng();
                    break;
                case "2":
                    System.out.println("删除信息");
                    deleteStudent();
                    break;
                case "3":
                    System.out.println("修改信息");
                    updateStudent();
                    break;
                case "4":
                    System.out.println("查看信息");
                    showStudent();
                    break;
                case "5":
                    System.out.println("感谢您的使用，再见！");
                    break lo;
                default:
                    System.out.println("您输入的选择不存在，请您重新输入：");
                    break;

            }
        }
    }




    /**
     * 添加学生方法
     */

    private void addStudeng() {
        //定义一个id
        String Studentid;
        while (true) {
            //判断学生id是否存在，如果存在就提示用户录入的id已经存在请重新录入
            System.out.println("请输入学生编号：");
            Studentid = sc.next();
            //调用业务的isExists方法将录入的id传递进去返回一个boolean类型的结果
            boolean result = studentService.isExists(Studentid);
            if (result) {
                System.out.println("您输入的id已经存在，请您重新输入：");
            } else {
                break;
            }
        }
        //调用aaStudentinfo方法 获取添加信息后的学生对象
        Student student= addStudentinfo(Studentid);

        //调用业务员addStudent方法传递参数
        studentService.addStudent(student);
        //提示用户添加成功
        System.out.println("添加成功！");


    }

    /**
     * 查看学生信息方法
     */
    public void showStudent() {

        //调用业务的findStudent方法获取数组,使用学生类型的数组接收返回值,容器中存在学生信息返回一学生类型数组，否则返回一个null
        Student[] students = studentService.findStudent();
        //数组为null表示当前容器为空，否则遍历数组中的元素；
        if (students == null) {
            System.out.println("当前容器为空，请添加后重试！");
            return;
        }

        System.out.println("编号" + "\t\t" + "姓名" + "\t" + "年龄" + "\t" + "生日");
        for (int i = 0; i < students.length; i++) {
            if (students[i] != null) {
                students[i].show();

            }
        }
    }

    /**
     * 删除学生方法
     */
    public void deleteStudent() {
        //调用业务员的findStudent方法，判断当前容器是否为空，为空则提示用户添加后再试,
        Student[] students = studentService.findStudent();
        if (students == null) {
            System.out.println("当前容器为空，请添加后重试！");
            return;
        }
        //调用addStudentinid方法，获取一个用户要进行删除的学生id
        String delid=addStudentid();
            //调用业务员的deleteStudent（）删除元素，并提示用户删除删除成功
            studentService.deleteStudent(delid);
            System.out.println("删除成功！");

    }

    /**
     * 修改学生信息的放法
     */
   public void updateStudent() {
       //调用业务员的findStudent方法，判断当前容器是否为空，为空则提示用户添加后再试,
       Student[] students = studentService.findStudent();
       if (students == null) {
           System.out.println("当前容器为空，请添加后重试！");
           return;
       }
       //调用addStudentinid方法，获取一个用户要进行修改的学生id
       String upid=addStudentid();
       //调用aaStudentinfo方法 获取添加信息后的学生对象
     Student student= addStudentinfo(upid);

           //调用业务员的updateStudent方法，修改学生信息
           studentService.updateStudent(student,upid);
           System.out.println("修改成功！");

    }

    /**
     *
     * @returnfa 返回一个用户要进行 删除/修改 的学生id
     */
    private String addStudentid() {

        String id;
        while (true) {
            System.out.println("请输入您要删除/修改的学生编号：");
            id= sc.next();
            //调用业务员的isExists方法判断用户要删除/修改的id是在容器中是否存在，存在则跳出循环，否则提示用户id不存在请重新输入
            boolean result = studentService.isExists(id);
            if (result) {
                return id;
            } else {
                System.out.println("您要修改的学生id不存在，请您重新输入：");
            }
        }

    }

    /**
     *
     * @param id 用户要进行 删除/修改 的学生id
     * @return 返回一个封装好的学生对象
     */
    public Student addStudentinfo(String id) {
        //提示用户添加修改信息
        System.out.println("请输入学生姓名");
        String upname = sc.next();
        System.out.println("请输入学生年龄：");
        String upage = sc.next();
        System.out.println("请输入学生生日：");
        String upbirthday = sc.next();
        //创建学生对象将添加的学生信息传入
        Student student = new Student(id, upname, upage, upbirthday);
        return  student;

    }



}
